今日原訂進度4/14:
創建一個 Messaging API channel。在 LINE Developers 後台設定 BOT 的基本資訊,並取得 Channel Access Token 和 Channel Secret。設定 Webhook URL (使用 ngrok 暫時將本地開發環境映射到公開網路)。撰寫基於 Python Flask 或 FastAPI 的簡單後端程式,使其能接收 LINE 傳來的文字訊息,並回覆「哈囉!」等基本文字。
先講結論,我覺得Gemini的Gem實在是太好用了,今天的進度大超前(已經把原本接下來三天的進度做完)
雖然今天進度超前,不過花了總時數五個小時,其實LINE BOT很快就設定完成,最大卡關是在無法傳送音檔給用戶...
成功使用Azure TTS服務生成語音檔,但無法傳送給用戶,只能在我的本地端下載
在程式碼中,加入呼叫生成式 AI (Gemini) 的邏輯,以便產生個人化建議與鼓勵給用戶。
這個是跟Gem討論過後的新發現~而且取得Gemini API Key步驟很簡單:
先請Gemini生成一張LINE BOT大頭貼,我覺得蠻符合也蠻可愛的:
串Messaging API、設定ngrok、VS CODE執行都還蠻順利的,
只是因為程式碼是從昨天的GRADIO版本去調整的,所以一直出現BUG,
譬如:沒設定到1份蛋白質相當於1顆雞蛋、漏掉了讓用戶輸入吃的食品份量、計算時誤用了模擬數據而非用戶上傳的營養標示圖片...等等。
經過了數十次的修修改改,最後終於數字計算都正確了!
程式碼從之前的209行來到了879行...但交給Gemini Debug速度很快,大幅提升效率。
然後今天的最大改變是捨棄了長條圖!
長條圖不知道為什麼看起來就莫名令人煩躁,於是我提出用emoji代替的方案,
把最多的成份往前排,例如這包洋芋片的鈉最多,那麼鈉就排第一個,其他就隨機往後排。
判斷標準:
蛋白質:1 顆雞蛋 (🥚) = 6克 蛋白質
脂肪:1茶匙的油(🧈) = 5克 脂肪
糖:1顆方糖(🍬) = 5克 糖
鈉:1 克鹽 (🧂) = 400mg 鈉
碳水化合物:1 碗160g的飯 (🍚) = 60克 碳水化合物
我希望最後的輸出是有相對應數量的emoji:
您好!營養組成如下圖:
🧂🧂🧂🍚🍚🥚🧈🍬
碳水化合物:120克,相當於兩碗白飯🍚🍚
蛋白質:6克,相當於一顆蛋🥚
脂肪:5克,相當於一茶匙油🧈
鈉:1200毫克,相當於3公克鹽巴🧂🧂🧂
糖:5克,相當於一顆方糖🍬
BUT最後生成的結果多了很多星號,明天再來修正!
至於語音檔只能存在我的本地端、無法傳送給用戶的問題,也是明天再來修正!
目前試了七次皆失敗,Gemini覺得是ngrok的問題,每次都傳這個建議給我:
請更新 NGROK_PUBLIC_URL:
重新啟動 ngrok,並從其終端機視窗中複製最新的 HTTPS 公開 URL (例如:https://xxxx-xxxx-xxxx-xxxx.ngrok-free.app)。
在 app.py 檔案中,找到這行:
Python YOUR_NGROK_URL = '請在這裡貼上你的 ngrok HTTPS 公開 URL'
將 '請在這裡貼上你的 ngrok HTTPS 公開 URL' 替換成你剛剛複製的 實際 ngrok HTTPS URL。
注意:每次 ngrok 重啟,這個 URL 都會改變,因此你需要重複此步驟。
但但但!我已經重新換過ngrok的URL了,還是不行,所以我覺得問題應該是躲在其他地方,今日五小時的折騰已累🤣
明天進度就專心處理讓語音檔成功傳給用戶吧!必要的話好像就要用到雲端儲存服務了...
這個部份還沒接觸過,那我就要再研究。
加油!!